import { customRef } from 'vue';
// 自定义ref
export default function (val,delay=1000) {
    let timer = null;
    return customRef((track, trigger) => { //track收集依赖 trigger触发更新
        return {    //必须返回get和set函数给vue调用
            // 一个ref的是通过一下流程来写的
            // get() {
            //     track();//track收集依赖
            //     return val
            // },
            // set(newVal) {
            //     val = newVal;
            //     trigger();//trigger触发更新
            // }
            get() {
                track();
                return val
            },
            set(newVal) {   //防抖的实现
                clearTimeout(timer)
                timer = setTimeout(() => {
                    val = newVal;
                    trigger();
                }, delay)

            }


        }
    })
}